package org.springcloud.plugin.framework.adapter;

import com.netflix.loadbalancer.Server;
import org.springcloud.plugin.common.entity.RuleEntity;

import java.util.Map;

/**
 * author: yanggld
 * date: 2019/12/14 12:31
 * version: 1.0
 * description: CoreAdapter
 */
public interface CoreAdapter {
    /**
     * 获取当前服务serviceID
     * @return
     */
    String getServiceId();
    /**
     * 获取当前服务group
     * @return
     */
    String getGroup();
    /**
     * 获取当前服务主机host
     * @return
     */
    String getHost();
    /**
     * 获取服务端口port
     * @return
     */
    int getPort();
    /**
     * 获取当前服务元数据
     * @return
     */
    Map<String, String> getMetadata();
    /**
     * 获取当前服务版本
     * @return
     */
    String getVersion();
    /**
     * 获取当前服务区域
     * @return
     */
    String getRegion();
    /**
     * 获取当前服务环境
     * @return
     */
    String getEnvironment();
    /**
     * 获取服务serviceID
     * @param server
     * @return
     */
    String getServerServiceId(Server server);
    /**
     * 获取服务元数据
     * @param server
     * @return
     */
    Map<String, String> getServerMetadata(Server server);
    /**
     * 获取服务版本
     * @param server
     * @return
     */
    String getServerVersion(Server server);
    /**
     * 获取服务区域
     * @param server
     * @return
     */
    String getServerRegion(Server server);
    /**
     * 获取服务环境
     * @param server
     * @return
     */
    String getServerEnvironment(Server server);
    /**
     * 获取规则
     * @return
     */
    RuleEntity getRule();
    /**
     * 设置规则
     * @param ruleEntity
     */
    void setRule(RuleEntity ruleEntity);

}